/******************************************************************************* * Copyright (c) 2004, 2006 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.ui.tests.api; import java.net.URL; import org.eclipse.core.runtime.FileLocator; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.swt.graphics.Image; import org.eclipse.ui.plugin.AbstractUIPlugin; import org.eclipse.ui.tests.harness.util.ImageTests; import org.eclipse.ui.tests.harness.util.UITestCase; /** * Tests to ensure that various icon scenarios work. These are tested on * editors but should be applicable for any client of * AbstractUIPlugin.imageDescriptorFromPlugin() * * @since 3.0 */ public class EditorIconTest extends UITestCase { /** * @param testName */ public EditorIconTest(String testName) { super(testName); } public void testDependantBundleIcon() { Image i1 = null; Image i2 = null; try { i1 = fWorkbench.getEditorRegistry().getDefaultEditor( "foo.icontest1").getImageDescriptor().createImage(); i2 = AbstractUIPlugin.imageDescriptorFromPlugin("org.eclipse.ui", "icons/full/obj16/font.png").createImage(); ImageTests.assertEquals(i1, i2); } finally { if (i1 != null) { i1.dispose(); } if (i2 != null) { i2.dispose(); } } } public void testNonDependantBundleIcon() { Image i1 = null; Image i2 = null; try { i1 = fWorkbench.getEditorRegistry().getDefaultEditor( "foo.icontest2").getImageDescriptor().createImage(); i2 = AbstractUIPlugin.imageDescriptorFromPlugin( "org.eclipse.jdt.ui", "icons/full/obj16/class_obj.png") // layer breaker! .createImage(); ImageTests.assertEquals(i1, i2); } finally { if (i1 != null) { i1.dispose(); } if (i2 != null) { i2.dispose(); } } } public void testBadIcon() { Image i1 = null; Image i2 = null; try { i1 = fWorkbench.getEditorRegistry().getDefaultEditor( "foo.icontest3").getImageDescriptor().createImage(); i2 = AbstractUIPlugin.imageDescriptorFromPlugin("org.eclipse.ui", "icons/full/obj16/file_obj.png").createImage(); ImageTests.assertEquals(i1, i2); } finally { if (i1 != null) { i1.dispose(); } if (i2 != null) { i2.dispose(); } } } /** * Tests undocumented support for platform:/plugin/... URLs. */ public void testBug395126() { ImageDescriptor imageDescriptor = AbstractUIPlugin.imageDescriptorFromPlugin("org.eclipse.jface", "platform:/plugin/org.eclipse.jface/$nl$/icons/full/message_error.png"); Image image = null; try { image = imageDescriptor.createImage(false); assertNotNull(image); } finally { if (image != null) { image.dispose(); } } } /** * Tests undocumented support for platform:/plugin/... URLs. */ public void testBug395126_missing() { ImageDescriptor imageDescriptor = AbstractUIPlugin.imageDescriptorFromPlugin("org.eclipse.jface", "platform:/plugin/org.eclipse.jface/$nl$/icons/does-not-exist.gif"); Image image = null; try { image = imageDescriptor.createImage(false); assertNull(image); } finally { if (image != null) { image.dispose(); } } } /** * Tests undocumented support for arbitrary URLs. */ public void testBug474072() throws Exception { URL url = FileLocator.find(new URL("platform:/plugin/org.eclipse.jface/$nl$/icons/full/message_error.png")); ImageDescriptor imageDescriptor = AbstractUIPlugin.imageDescriptorFromPlugin("org.eclipse.jface", url.toString()); Image image = null; try { image = imageDescriptor.createImage(false); assertNotNull(image); } finally { if (image != null) { image.dispose(); } } } /** * Tests undocumented support for arbitrary URLs. */ public void testBug474072_missing() throws Exception { String url = FileLocator.find(new URL("platform:/plugin/org.eclipse.jface/$nl$/icons/full/message_error.png")) .toString(); url += "does-not-exist"; ImageDescriptor imageDescriptor = AbstractUIPlugin.imageDescriptorFromPlugin("org.eclipse.jface", url); Image image = null; try { image = imageDescriptor.createImage(false); assertNull(image); } finally { if (image != null) { image.dispose(); } } } }